package com.planet.merchant.service.impl;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.planet.merchant.domain.PmsProductCode;
import com.planet.merchant.domain.PmsProductCodeBind;
import com.planet.merchant.mapper.PmsProductCodeBindMapper;
import com.planet.merchant.mapper.PmsProductCodeMapper;
import com.planet.merchant.service.IPmsProductCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


/**
 * 商品二维码Service业务层处理
 *
 * @author ruoyi
 * @date 2025-04-07
 */
@Service
public class PmsProductCodeServiceImpl extends ServiceImpl<PmsProductCodeMapper, PmsProductCode> implements IPmsProductCodeService
{
    @Autowired
    private PmsProductCodeMapper pmsProductCodeMapper;
    @Autowired
    private PmsProductCodeBindMapper pmsProductCodeBindMapper;

    /**
     * 查询商品二维码
     *
     * @param id 商品二维码主键
     * @return 商品二维码
     */
    @Override
    public PmsProductCode selectPmsProductCodeById(Long id)
    {
        return pmsProductCodeMapper.selectPmsProductCodeById(id);
    }

    /**
     * 查询商品二维码列表
     *
     * @param pmsProductCode 商品二维码
     * @return 商品二维码
     */
    @Override
    public List<PmsProductCode> selectPmsProductCodeList(PmsProductCode pmsProductCode)
    {
        return pmsProductCodeMapper.selectPmsProductCodeList(pmsProductCode);
    }

    /**
     * 新增商品二维码
     *
     * @param pmsProductCode 商品二维码
     * @return 结果
     */
    @Override
    public int insertPmsProductCode(PmsProductCode pmsProductCode)
    {
        return pmsProductCodeMapper.insertPmsProductCode(pmsProductCode);
    }

    /**
     * 修改商品二维码
     *
     * @param pmsProductCode 商品二维码
     * @return 结果
     */
    @Override
    public int updatePmsProductCode(PmsProductCode pmsProductCode)
    {
        return pmsProductCodeMapper.updatePmsProductCode(pmsProductCode);
    }

    /**
     * 批量删除商品二维码
     *
     * @param ids 需要删除的商品二维码主键
     * @return 结果
     */
    @Override
    public int deletePmsProductCodeByIds(Long[] ids)
    {
        //查询绑定关系
        List<PmsProductCode> pmsProductCodeList = pmsProductCodeMapper.selectPmsProductCodeByIds(ids);
        //如果要删除的二维码有绑定关系，则删除对应的绑定关系
        for (PmsProductCode pmsProductCode : pmsProductCodeList) {
            if(pmsProductCode.getLevel()==3){
                //删除绑定关系
                QueryWrapper<PmsProductCodeBind> qw = new QueryWrapper<>();
                qw.eq("level3_code",pmsProductCode.getCode());
                pmsProductCodeBindMapper.delete(qw);
            }else if(pmsProductCode.getLevel()==2){
                QueryWrapper<PmsProductCodeBind> qw = new QueryWrapper<>();
                qw.eq("level2_code",pmsProductCode.getCode());
                pmsProductCodeBindMapper.delete(qw);
            }else {
                QueryWrapper<PmsProductCodeBind> qw = new QueryWrapper<>();
                qw.eq("level1_code",pmsProductCode.getCode());
                pmsProductCodeBindMapper.delete(qw);
            }
        }


        return pmsProductCodeMapper.deletePmsProductCodeByIds(ids);
    }

    /**
     * 删除商品二维码信息
     *
     * @param id 商品二维码主键
     * @return 结果
     */
    @Override
    public int deletePmsProductCodeById(Long id)
    {
        return pmsProductCodeMapper.deletePmsProductCodeById(id);
    }
}
